﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DBService;
using DBService.ViewDatas;
using System.Web.Services;

public partial class NewCompany : System.Web.UI.Page
{
    int CompanyID;
    static string CompanyName = "";
    static string CompanyNameEng = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["UserID"] == null)
        {
            //Script.Text = "<script>alert('კომპანიის დამატებას შეძლებთ მას შემდეგ რაც გაივლით ავტორიზაციას'); window.location='" + Master.FacebookLoginLink + "'</script>";
            //return;
            SubmitionDiv.InnerHtml = "<input type=\"button\"  class=\"reg_button\" onclick=\"parent.location='register.aspx';\" value=\"კომპანიის დასამატებლად თქვენ უნდა დარეგისტრირდეთ\" />";
            Submit.Visible = false;
            //Submit.Text = "კომპანიის დასამატებლად თქვენ უნდა დარეგისტრირდეთ";
            //Submit.OnClientClick = "parent.location='register.aspx';";
        }
        var cats = new ModelAdapter().GetCategoreis(null);
        LitCategoryOption.Text = "";
        foreach (var cat in cats)
        {
            LitCategoryOption.Text += "<option value=\"" + cat.CategoryID + "\">" + cat.Title + "</option>";
        }
        if (cats != null && cats.Count > 0)
        {
            LitFirstCat.Text = cats[0].Title;
        }
    }

    protected void OnSubmit(object sender, EventArgs e)
    {
        try
        {
            var userid = (int?)Session["UserID"];
            if (userid == null)
            {
                Response.Redirect("~/");
            }
            string Logo = "";
            if (UploadLogo.HasFile)
            {
                Logo = Guid.NewGuid().ToString().Substring(0, 10) + "_" + UploadLogo.FileName;
                UploadLogo.SaveAs(Server.MapPath("upload") + "\\" + Logo);
            }
            List<string> images = new List<string>();
            // Get the HttpFileCollection
            HttpFileCollection hfc = Request.Files;
            for (int i = 0; i < hfc.Count; i++)
            {
                HttpPostedFile hpf = hfc[i];

                if (hpf.ContentLength > 0)
                {
                    string[] formats = new string[] { ".png", ".jpeg", ".jpg" };

                    if (formats.Contains(System.IO.Path.GetExtension(hpf.FileName).ToLower()))
                    {
                        if (System.IO.Path.GetFileName(hpf.FileName) != System.IO.Path.GetFileName(Logo))
                        {
                            string img = Guid.NewGuid().ToString().Substring(0, 10) + System.IO.Path.GetFileName(hpf.FileName);
                            images.Add(img);
                            hpf.SaveAs(Server.MapPath("upload") + "\\" + img);
                        }
                    }
                    else
                    {
                        throw new ArgumentException(String.Join(" ", formats) + " არის დაშვებული ფორმატები...");
                    }
                }
            }

            List<int> categories = new List<int>();
            if (!String.IsNullOrEmpty(HidnField.Value))
            {
                foreach (var cat in HidnField.Value.Split('|'))
                {
                    if (!String.IsNullOrEmpty(cat))
                    {
                        categories.Add(int.Parse(cat));
                    }
                }
            }
            else
            {
                throw new ArgumentException("აირჩიეთ ერთი კატეგორია მაინც");
            }


            short? workFrom = null;
            short? workTo = null;
            int? priceFrom = null;
            int? priceTo = null;
            if (!string.IsNullOrEmpty(WorkHourFrom.Value))
            {
                workFrom = short.Parse(WorkHourFrom.Value);
            }
            if (!string.IsNullOrEmpty(WorkHourTo.Value))
            {
                workTo = short.Parse(WorkHourTo.Value);
            }
            if (!string.IsNullOrEmpty(PriceFrom.Value))
            {
                priceFrom = short.Parse(PriceFrom.Value);
            }
            if (!string.IsNullOrEmpty(PriceTo.Value))
            {
                priceTo = short.Parse(PriceTo.Value);
            }

            ModelAdapter adapter = new ModelAdapter();
            string cName = "";
            if (!string.IsNullOrEmpty(CompanyNameEng))
            {
                cName += CompanyName + " / " + CompanyNameEng;
            }
            else
                cName = CompanyName;
            var acid = adapter.CompanyAction(null,
                                  Logo,
                                  cName,//CompanyName.Value,
                                  "",//Address.Value,
                                  String.Empty,
                                  "",//Phone.Value.ToString(),
                                  Website.Value.ToString(),
                                  IsWifi.Checked,
                                  IsOpenAir.Checked,
                                  Monday.Checked,
                                  Thuesday.Checked,
                                  Wednesday.Checked,
                                  Thursday.Checked,
                                  Friday.Checked,
                                  Saturday.Checked,
                                  Sunday.Checked,
                                  workFrom,
                                  workTo,
                                  priceFrom,
                                  priceTo,
                                  Gel.Checked,
                                  USD.Checked,
                                  Eur.Checked, null, null, null, null, categories, images, userid.Value);


            if (!string.IsNullOrEmpty(addressValues.Value))
            {
                var entities = addressValues.Value.Split(new string[] { "*@*" }, StringSplitOptions.None);
                List<CompanyOption> compOptions = new List<CompanyOption>();
                foreach (string entity in entities)
                {
                    string[] fields = entity.Split(new string[] { "|@|" }, StringSplitOptions.None);
                    if (fields == null || fields.Length != 3)
                    {
                        continue;
                    }
                    compOptions.Add(new CompanyOption()
                    {
                        CompanyID = CompanyID,
                        ModifierUserID = userid,
                        OptionName = fields[1],
                        OptionTypeID = (int)CompanyOptionType.ADDRESS_PHONE,
                        SortIndex = string.IsNullOrEmpty(fields[0]) ? (short?)null : short.Parse(fields[0]),
                        Value = fields[2]
                    });
                }
                adapter.AddCompanyOptions(compOptions, acid, int.Parse(userid.ToString()));
            }



            #region write on fb
            //დავამატე (კომპანიის სახელი). შეაფასე და მოიგე Kindle Fire და iPod Touch 5th Gen!
            //string msg = "დავამატე " + CompanyName.Value + ". შეაფასე და მოიგე Kindle Fire და iPod Touch 5th Gen!";//Comp.Name + " - ჩემი შეფასება: " + ReviewText.Value + ".  შენ რას ფიქრობ?";
            //string fbPhoto = "";
            //if (!String.IsNullOrEmpty(Logo))
            //{
            //    fbPhoto = "http://revio.ge/upload/" + Logo;
            //}
            //Facebook.WriteOnFace(msg,
            //    Session["access_token"].ToString(),
            //    fbPhoto,
            //    "http://revio.ge/singlecompany.aspx?id=" + acid); 
            #endregion

            Script.Text = "<script>alert('კომპანია დაემატა, რევიო გმადლობთ აქტიურობისთვის!'); window.location = 'default.aspx';</script>";
        }
        catch (Exception ex)
        {
            //TODO სიგრძეზე შემოწმება ჩაამატე.
            ErrorText.InnerText = ex.Message;
        }
    }

    [WebMethod]
    public static List<string> GetAllCompaniesByName(string keywordStartsWith)
    {
        //List<string> list = new List<string> { "kakah", "kakha" };
        CompanyName = keywordStartsWith;
        ModelAdapter service = new ModelAdapter();
        return service.GetCompaniesNamesByName(keywordStartsWith).Take(10).ToList();
    }

    [WebMethod]
    public static List<string> GetAllCompaniesByEngName(string keywordStartsWith)
    {
        //List<string> list = new List<string> { "kakah", "kakha" };
        CompanyNameEng = keywordStartsWith;
        ModelAdapter service = new ModelAdapter();
        return service.GetCompaniesNamesByName(keywordStartsWith).Take(10).ToList();
    }

}
